A typical computer system includes one or more host systems and one or more storage systems. A storage system typically provides relatively large-scale, non-volatile storage of data which may be accessed by a host system. A host system typically accesses a storage system by performing write and read operations to and from the storage system via a communication path or network between the host and storage system.
A typical host system includes a host processor and a host cache. The host processor executes application programs that require access to data and that may also modify the data or generate new data. The host cache temporarily holds data for use by the host processor. Because communication delays are reduced, the host processor can access the information held in the host cache more quickly than data held in the storage system. Accordingly, when the host processor requires access to data, the host cache is first checked to determine whether the requested data is present in the host cache. If so, the data can be retrieved more quickly, improving system performance. If the data is not present in the host cache, it can be retrieved from the storage system.
In addition, the storage system commonly includes a mass-storage medium, such as a hard disk or a disk array, and a storage system cache. A typical storage system cache temporarily holds information obtained from the mass-storage medium or information that is to be stored in the mass-storage medium. Because access times for the storage system cache are typically less than access times for the mass-storage medium, information held in the storage system cache can be accessed by the host system more quickly than data held in the mass-storage medium. Accordingly, where requested data is to be retrieved from the storage system, the storage system cache is first checked to determine whether the requested data is present in the storage system cache. If so, the data can be retrieved more quickly than from the mass-storage medium. If the data is not present in the storage system cache, it can be retrieved from the mass-storage medium.
In addition, the storage system cache typically serves as a buffer for write operations. More particularly, where the host system sends data to be stored by the storage system, the data is first received into the storage system cache and then the data is written to the mass-storage medium.
A variety of techniques are known for enhancing performance of a system that includes a cache memory. Examples include read-ahead, in which data at memory locations that follow requested data is also retrieved and made ready in cache memory in case it is requested, and asynchronous write operations, in which data to be written to mass-storage is buffered in cache memory while awaiting completion of the writing and while other operations are allowed to commence. However, using these techniques generally involves tradeoffs and, as a result, they do not always improve performance. For example, data retrieved for a read-ahead operation occupies space in cache memory that would otherwise be available for other uses that might have a greater impact on performance depending on the circumstances.
What is needed is a technique for managing cache memory for more efficiently utilizing techniques intended to improve performance. It is to these ends that the present invention is directed.